#ifndef _BSP_GPIO_H
#define _BSP_GPIO_H
#define _BSP_KEY_H
#include "fsl_common.h"
#include "fsl_iomuxc.h"
#include "MCIMX6Y2.h"

/* 枚举类型和结构体定义 */
typedef enum _gpio_pin_direction
{
    kGPIO_DigitalInput = 0U,  		/* 输入 */
    kGPIO_DigitalOutput = 1U, 		/* 输出 */
} gpio_pin_direction_t;

/* 描述中断触发类型 */
typedef enum _gpio_interrupt_mode
{
    kGPIO_NoInterrupt = 0U,/* 无中断功能 */
    KGPIO_IntLowLevel = 1U,/* 低电平触发 */
    KGPIO_IntHighLevel = 2U,/* 高电平触发 */
    KGPIO_IntRisingLevel = 3U,/* 上升沿触发 */
    KGPIO_IntFallingLevel = 4U,/* 下降沿触发 */
    KGPIO_IntRisingOrFallingLevel = 5U,/* 边沿触发 */
} gpio_intterupt_mode_t;


	

typedef struct _gpio_pin_config
{
    gpio_pin_direction_t direction; /* GPIO方向:输入还是输出 */
    uint8_t outputLogic;            /* 如果是输出的话，默认输出电平 */
    gpio_intterupt_mode_t intteruptMode;
} gpio_pin_config_t;


/* 函数声明 */
void gpio_init(GPIO_Type *base, int pin, gpio_pin_config_t *config);
int gpio_pinread(GPIO_Type *base, int pin);
void gpio_pinwrite(GPIO_Type *base, int pin, int value);
void gpio_clearintflags(GPIO_Type *base, unsigned int pin);
void gpio_enableint(GPIO_Type *base, unsigned int pin);
void gpio_disableint(GPIO_Type *base, unsigned int pin);
void gpio_intconfig(GPIO_Type *base, unsigned int pin, unsigned int pin_int_mode);





#endif
















